//
//  ALPHAHeapIcon.m
//  Alpha
//
//  Created by Dal Rupnik on 18/06/15.
//  Copyright © 2015 Unified Sense. All rights reserved.
//

#import "ALPHAHeapIcon.h"

NSString *const ALPHAIconHeapIdentifier = @"com.unifiedsense.alpha.icon.heap";

@implementation ALPHAHeapIcon

- (instancetype)init
{
    self = [super initWithIdentifier:ALPHAIconHeapIdentifier];
    
    if (self)
    {
        self.drawingSize = CGSizeMake(80.0, 80.0);
        self.drawingBlock = ^(CGSize size, NSDictionary* parameters)
        {
            UIColor *fillColor = parameters[ALPHADrawingForegroundColorKey];
            
            CGRect frame = { CGPointZero, size };
            
            //// Subframes
            CGRect heapObjectsGroup = CGRectMake(CGRectGetMinX(frame), CGRectGetMinY(frame) + (0.075 * size.height), CGRectGetWidth(frame), CGRectGetHeight(frame) - (0.15 * size.height));
            
            
            //// HeapObjects Group
            {
                //// Bezier Drawing
                UIBezierPath* bezierPath = UIBezierPath.bezierPath;
                [bezierPath moveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.74786 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.49079 * CGRectGetHeight(heapObjectsGroup))];
                [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.69314 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.22107 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.78850 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.40333 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.75596 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.28732 * CGRectGetHeight(heapObjectsGroup))];
                [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.62211 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.11964 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.66484 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.19121 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.62860 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.16401 * CGRectGetHeight(heapObjectsGroup))];
                [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.66794 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.00000 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.61555 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.07487 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.64263 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.03399 * CGRectGetHeight(heapObjectsGroup))];
                [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.51969 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.06271 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.61677 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.01481 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.56467 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.03008 * CGRectGetHeight(heapObjectsGroup))];
                [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.43191 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.21119 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.47470 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.09534 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.43713 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.14872 * CGRectGetHeight(heapObjectsGroup))];
                [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.42213 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.30553 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.42926 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.24300 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.43466 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.27725 * CGRectGetHeight(heapObjectsGroup))];
                [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.39897 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.33672 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.41666 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.31789 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.40813 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.32798 * CGRectGetHeight(heapObjectsGroup))];
                [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.31403 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.37914 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.37468 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.35986 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.34490 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.37472 * CGRectGetHeight(heapObjectsGroup))];
                [bezierPath addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.74786 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.49079 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.44925 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.45422 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.59869 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.49268 * CGRectGetHeight(heapObjectsGroup))];
                [bezierPath closePath];
                [fillColor setFill];
                [bezierPath fill];
                
                
                //// Bezier 2 Drawing
                UIBezierPath* bezier2Path = UIBezierPath.bezierPath;
                [bezier2Path moveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.16631 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.72099 * CGRectGetHeight(heapObjectsGroup))];
                [bezier2Path addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.16743 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.72187 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.16668 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.72128 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.16705 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.72156 * CGRectGetHeight(heapObjectsGroup))];
                [fillColor setFill];
                [bezier2Path fill];
                
                
                //// Bezier 3 Drawing
                UIBezierPath* bezier3Path = UIBezierPath.bezierPath;
                [bezier3Path moveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.17147 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.67785 * CGRectGetHeight(heapObjectsGroup))];
                [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.05660 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.65366 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.13370 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.65440 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.09234 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.63002 * CGRectGetHeight(heapObjectsGroup))];
                [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.00004 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.75569 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.02226 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.67639 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.00075 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.70557 * CGRectGetHeight(heapObjectsGroup))];
                [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.01950 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.83594 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + -0.00021 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.77318 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.00004 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.81353 * CGRectGetHeight(heapObjectsGroup))];
                [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.05867 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.87579 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.03212 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.85048 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.04348 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.86627 * CGRectGetHeight(heapObjectsGroup))];
                [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.38635 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.99487 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.17844 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.95088 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.25568 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.97857 * CGRectGetHeight(heapObjectsGroup))];
                [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.60090 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.99728 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.44452 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 1.00213 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.54251 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 1.00047 * CGRectGetHeight(heapObjectsGroup))];
                [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.83330 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.95936 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.68103 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.99292 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.76029 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.98721 * CGRectGetHeight(heapObjectsGroup))];
                [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.99247 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.81718 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.89414 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.93615 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.96699 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.89260 * CGRectGetHeight(heapObjectsGroup))];
                [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.98341 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.70351 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 1.00483 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.78059 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 1.00208 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.73524 * CGRectGetHeight(heapObjectsGroup))];
                [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.90117 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.66999 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.96472 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.67177 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.93009 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.65655 * CGRectGetHeight(heapObjectsGroup))];
                [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.87342 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.58894 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.90486 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.63938 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.89201 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.60831 * CGRectGetHeight(heapObjectsGroup))];
                [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.80797 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.55398 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.85483 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.56958 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.83131 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.56015 * CGRectGetHeight(heapObjectsGroup))];
                [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.60956 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.53141 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.74286 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.53675 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.67552 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.54177 * CGRectGetHeight(heapObjectsGroup))];
                [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.31882 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.44399 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.51073 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.51589 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.41689 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.46624 * CGRectGetHeight(heapObjectsGroup))];
                [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.22994 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.41721 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.29021 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.43751 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.26569 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.42164 * CGRectGetHeight(heapObjectsGroup))];
                [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.12330 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.48116 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.19960 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.41345 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.14657 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.41269 * CGRectGetHeight(heapObjectsGroup))];
                [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.11901 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.62135 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.12254 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.48336 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.09677 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.56176 * CGRectGetHeight(heapObjectsGroup))];
                [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.16439 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.67370 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.12780 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.64487 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.14583 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.65502 * CGRectGetHeight(heapObjectsGroup))];
                [bezier3Path addCurveToPoint: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.17201 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.67811 * CGRectGetHeight(heapObjectsGroup)) controlPoint1: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.16602 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.67535 * CGRectGetHeight(heapObjectsGroup)) controlPoint2: CGPointMake(CGRectGetMinX(heapObjectsGroup) + 0.16885 * CGRectGetWidth(heapObjectsGroup), CGRectGetMinY(heapObjectsGroup) + 0.67658 * CGRectGetHeight(heapObjectsGroup))];
                [fillColor setFill];
                [bezier3Path fill];
            }
        };
    }
    
    return self;
}

@end
